package com.example.emos.wx.service;

import com.example.emos.wx.db.pojo.TbUser;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

/**
 * @ClassName UserService
 * @Author zhangzhixi
 * @Description
 * @Date 2022/8/26 11:37
 * @Version 1.0
 */
@SuppressWarnings("all")
public interface UserService {


    /**
     * 用户注册
     *
     * @param registerCode 邀请码
     * @param code         code
     * @param nickname     微信昵称
     * @param photo        微信头像
     * @return 用户是否注册成功，>0表示注册成功
     */
    int registerUser(String registerCode, String code, String nickname, String photo);

    /**
     * 查询用户的权限列表
     *
     * @param userId 用户的id
     * @return 用户权限列表集合
     */
    Set<String> searchUserPermissions(int userId);


    /**
     * 用户登录
     *
     * @param code 微信临时授权码
     * @return 是否有该用户，没有返回null，有就返回>0的数据
     */
    Integer login(String code);

    /**
     * 根据用户ID查询该用户信息
     *
     * @param userId 用户的ID
     * @return 用户详细信息
     */
    TbUser searchById(int userId);

    /**
     * 查询员工的入职日期
     *
     * @param userId 用户id
     * @return 员工入职日期
     */
    String searchUserHiredate(int userId);


    /**
     * 查询用户的概要信息，姓名，头像，部门
     *
     * @param userId 用户ID
     * @return 用户概要信息
     */
    HashMap<String, Object> searchUserSummary(int userId);

    /**
     * 分组查询员工记录
     *
     * @param keyword 员工姓名关键字
     * @return 员工记录
     */
    ArrayList<HashMap> searchUserGroupByDept(String keyword);


    /**
     * 会议列表选择用户
     *
     * @param param 用户列表
     * @return 用户数据
     */
    ArrayList<HashMap> searchMembers(List param);

    /**
     * 工作流发起人与终审者的信息
     *
     * @param param 用户id集合
     * @return 用户的id，姓名，头像
     */
    List<HashMap> selectUserPhotoAndName(List param);

    /**
     * 获取用户签名字符串
     *
     * @param id 用户id
     * @return 以用户邮箱为用户签名字符串
     */
    String searchMemberEmail(int id);
}
